package com.testdocs.client;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.place.shared.PlaceController;
import com.testdocs.client.common.StatusBar;
import com.testdocs.client.common.WaitingPopupPanel;
import com.testdocs.client.error.RpcErrorHandler;
import com.testdocs.client.project.context.ProjectContextHolder;
import com.testdocs.client.project.create.CreateProjectView;
import com.testdocs.client.project.dashboard.DashboardView;
import com.testdocs.client.signin.SignInView;
import com.testdocs.client.signin.context.SignInContextHolder;
import com.testdocs.client.structure.general.GeneralPanels;
import com.testdocs.client.structure.menu.MenuPanel;
import com.testdocs.client.structure.top.TopPanel;
import com.testdocs.client.structure.work_area.WorkAreaPanel;
import com.testdocs.client.test.group.TestGroupView;
import com.testdocs.client.test.menu.TestGroupMenu;
import com.testdocs.client.validation.Validator;
import com.testdocs.client.version.list.VersionListView;

public interface ClientFactory {
	// Global 
    EventBus getEventBus();
    PlaceController getPlaceController();
    
    // Validator
    Validator getValidator();
    
    // Contexts
    SignInContextHolder getSignInContextHolder();
    ProjectContextHolder getProjectContextHolder();

    // Views
    CreateProjectView getCreateProjectView();
    SignInView getSignInView();
    DashboardView getDashboardView();
    VersionListView getVersionListView();
    TestGroupView getTestGroupView();

    // Panels
    TopPanel getTopPanel();
    GeneralPanels getGeneralPanels();
    WorkAreaPanel getWorkAreaPanel();
    MenuPanel getMenuPanel();
    TestGroupMenu getTestGroupMenu();
    
    // Other
    WaitingPopupPanel getWaitingPopupPanel();
    StatusBar getStatusBar();
    
    RpcErrorHandler getRpcErrorHandler();
}
